package com.easychat.service;

import com.easychat.common.PageResult;
import com.easychat.dto.GroupInfoDto;
import com.easychat.dto.TokenUserInfoDto;
import com.easychat.entity.GroupInfo;
import com.easychat.entity.query.GroupInfoQuery;
import com.easychat.enums.MessageTypeEnum;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * (GroupInfo)表服务接口
 *
 * @author makejava
 * @since 2024-10-08 19:54:20
 */
public interface GroupInfoService {

    /**
     * 通过ID查询单条数据
     *
     * @param groupId 主键
     * @return 实例对象
     */
    GroupInfo queryById(String groupId);

    /**
     * 分页查询
     *
     * @param userId 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    PageResult queryByPage(String userId, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param groupInfoDto 实例对象
     * @return 实例对象
     */
    Boolean insert(GroupInfoDto groupInfoDto);

    /**
     * 修改数据
     *
     * @param groupInfo 实例对象
     * @return 实例对象
     */
    GroupInfo update(GroupInfo groupInfo);

    /**
     * 通过主键删除数据
     *
     * @param groupId 主键
     * @return 是否成功
     */
    boolean deleteById(String groupId);

    void saveGroup(GroupInfoDto groupInfo, MultipartFile avatarCover, MultipartFile avatarFile) throws IOException;

    /**
     * 根据群组id查询群信息
     * @param groupId
     * @return
     */
    GroupInfo getGroupInfoByGroupId(String groupId,String userId);

    /**
     * 查群组
     * @param query
     * @return
     */
    PageResult findListByPage(GroupInfoQuery query);

    void dissolutionGroup(String groupId,String groupOwnerId);

    void addOrRemoveGroupUser(TokenUserInfoDto tokenUserInfoDto, String groupId, String selectContacts, Integer opType);
    void leaveGroup(String userId, String groupId, MessageTypeEnum messageTypeEnum);
}
